#ifndef __DB_H__
#define __DB_H__

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <stdlib.h>


typedef struct recv
{
	char business[2];	//业务编号
	char post[5];		//邮柜代码
	char phone[12];		//手机号
	char info[13];		//订单号/密码/验证码
}recv_cli_t;

/*
 *函数名:get_info
 *函数功能:获取数据库内容
 * */
static int get_info(void *pwd,int argc,char **argv,char **azColName);

/*
 * 函数名: split()
 * 函数功能:将接受到的字符串转换为结构体
 * 入参：接受到的字符串eg:1#1111#13900000000#1234#
 * 返回值：结构体 {字符串1 2 3 4}
 */
recv_cli_t split(char *buf);

/*
 * 函数名：recv_package
 *函数功能:实现用户的取件
 *函数参数：
 		num:客户电话号码
		recv_num:取件验证码
 *函数返回值:
 		成功：0
		失败：-1
*/
int  recv_package(char *num,char *recv_num);

/*
 *函数名：courier_send
 *函数功能：用户投递函数 调用get_grid()
 *入参：手机号 订单号
 *返回值：打开的格口号 失败-1 选择了自动模式(num = auto)-2
*/
int courier_send(char *num, char *recv_num);

/*函数名:randdom
 *函数功能:生成验证码
 *入参：无
 *返回值：随机生成的6位数字验证码
 */
char *randdom();

/*函数名：order_reg
 *函数功能:快递员登录成功之后，生成用户结构体信息
 *     将用户手机号，订单号，柜号，验证码插入到数据库表中
 *函数入参：打开的格口号
 *函数返回值：6位数字验证码
 */
char * order_reg(int);

/*
 *函数名：order_reg_auto
 *函数功能：使用二维码投递后，从得到的信息文件中读取信息
 *          并插入数据库
 *函数入参：无
 *函数返回值：打开的格口号 失败-1
 */
int order_reg_auto();

/*
 *函数名：delete_user
 *函数功能：用户取件成功后擦除信息
 *函数入参：手机号 验证码
 *函数返回值：成功 1  失败 -1
 */
int delete_user(char *phone,char *info);

/*函数名：user_log
 *参数：phone：手机号 info：验证码
 *功能：用户取件
 *       首先比对手机号是否在send数据库表中，
 *       在判断验证码的正确性
 *返回值：放置货物的格口号 失败返回NULL
 */
char *user_log(char *phone,char *info);

/*函数名：courier_log
 *参数：phone：手机号 info：密码
 *功能：快递员登录
 *      首先比对手机号是否在recv数据库表中，
 *      在判断验证码的正确性
 *返回值：成功返回0 失败-1
 */
int courier_log(char *phone,char *info);


/*
 *函数名：recv_photo
 *函数功能：接受二维码图片
 *函数入参：fd:通信套接字 info:存放信息
 *函数返回值：成功 0  失败 -1
 */
int recv_photo(int fd,char *info);

#endif
